A model-driven software development technique is a development methodology in which models, or abstractions, are utilized to implement a software application. For example, utilizing a model-driven software development tool, an application developer may develop a graphical or text-based model of a software application. The model is then provided as input to a code generator, which analyzes the model and generates application code for a target platform based on the model.
A variety of problems exist with conventional model-driven software development tools. First, many conventional model-driven software development tools only generate a portion of the necessary code required to successfully deploy a fully functional application. For instance, many development tools will only generate a portion of the server-side code (e.g., the application tier, or, the database tier) that is required to successfully implement a working application. This leaves the application developer to manually code the remaining portions of the server-side code. Similarly, some tools only generate server-side code (or, client-side code) based on a model, leaving the application developer to manually generate the client-side code (or, server side-code).
Another problem with many conventional development tools is that they lack the ability to fully deploy the code generated based on the model. For instance, many development tools generate code, but require an application developer to perform various configuration tasks at the target platform (e.g., an application server), and/or manually install the code on the target platform. This problem is compounded when the application is bound for a target platform that utilizes an object-oriented programming paradigm in conjunction with a relational database to persist data. In such a scenario, the code that performs the translation or conversion between data elements in the object domain and data elements in the relational database domain must be updated every time the database schema changes. Consequently, application developers are often tasked with manually updating and configuring the application code.